import {config} from "dotenv";
import {defineConfig, loadEnv} from "vite";
import vue from "@vitejs/plugin-vue";
import path from "path";
import inject from '@rollup/plugin-inject'

const srcPath = path.resolve(__dirname, "src");

// 引入环境变量
config();

// https://vitejs.dev/config/
export default defineConfig(({command, mode}) => {
  const env = loadEnv(mode, process.cwd(), '')
  return {
    // server: {
    //   open: true,
    //   proxy: {
    //     [ process.env.APP_API_ORIGIN as string]: env.APP_API_ORIGIN || '',
    //   },
    // },
    build: {
      outDir: 'dist',   // 指定打包路径，默认为项目根目录下的 dist 目录
      minify: "terser", // 必须开启：使用terserOptions才有效果
      terserOptions: {
        compress: {
          keep_infinity: true,  // 防止 Infinity 被压缩成 1/0，这可能会导致 Chrome 上的性能问题
          drop_console: true,   // 生产环境去除 console
          drop_debugger: true   // 生产环境去除 debugger
        },
      },
      chunkSizeWarningLimit: 1500   // chunk 大小警告的限制（以 kbs 为单位）
    },

    server: {
      open: true,
      port: 3001,
      host: 'localhost',
      proxy: {
        [env.APP_API_PREFIX as string]: {
          target: env.APP_API_ORIGIN,
          changeOrigin: true,
          pathRewrite: {
            ['^' + "/es-iot"]: ''
          }
        }
      },
    },
    css: {
      preprocessorOptions: {
        // 全局样式引入
        scss: {
          // additionalData: '@import "./src/styles/variables.scss";',
          additionalData: `@import "src/styles/common/style.scss";`,
          javascriptEnabled: true
        }
      }
    },
    base: env.APP_BASE || '/',
    plugins: [
      vue(),
      // inject({
      //   $: "jquery",  // 这里会自动载入 node_modules 中的 jquery
      //   jQuery: "jquery",
      //   "windows.jQuery": "jquery"
      // })
      {
        $: "jquery",  // 这里会自动载入 node_modules 中的 jquery
        jQuery: "jquery",
        "windows.jQuery": "jquery",
        Popper: ['popper.js', 'default']
      }
    ],
    // plugins: [
    //   vue(),
    //   inject({
    //     $: "jquery",  // 这里会自动载入 node_modules 中的 jquery
    //     jQuery: "jquery",
    //     "windows.jQuery": "jquery",
    //     Popper: ['popper.js', 'default']
    //   })
    //  // {
    // //   $: "jquery",
    // //   jQuery: "jquery",
    // //   "windows.jQuery": "jquery",
    // //   Popper: ['popper.js', 'default']
    // // }
    // // ,
    // ],
    envPrefix: ['VITE', 'APP'],
    resolve: {
      alias: [
        {
          find: "@",
          replacement: srcPath,
        },
        {
          find: "@antv/x6",
          replacement: "@antv/x6/lib",
        },
        {
          find: "@antv/x6-vue-shape",
          replacement: "@antv/x6-vue-shape/lib",
        },
      ],
    },

    define: {
      'process.env.APP_API_ORIGIN': JSON.stringify(env.APP_API_ORIGIN),
      'process.env.APP_API_PREFIX': JSON.stringify(env.APP_API_PREFIX),
    },
  }

});
